switch: Set PRELIGHT state on widget
authorBenjamin Otte <otte@redhat.com>
Mon, 13 Oct 2014 02:23:02 +0000 (04:23 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 13 Oct 2014 02:39:58 +0000 (04:39 +0200)
gtk/gtkswitch.c

index 60cb64425e6f926d701bd9d68f2dd1fe235f51b6..4766200518fd9d702c995105cd4c1268288a2c58 100644 (file)
@@ -335,6 +335,7 @@ gtk_switch_enter (GtkWidget        *widget,
   if (event->window == priv->event_window)
     {
       priv->in_switch = TRUE;
+      gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_PRELIGHT, FALSE);
       gtk_widget_queue_draw (widget);
     }
 
@@ -350,6 +351,7 @@ gtk_switch_leave (GtkWidget        *widget,
   if (event->window == priv->event_window)
     {
       priv->in_switch = FALSE;
+      gtk_widget_unset_state_flags (widget, GTK_STATE_FLAG_PRELIGHT);
       gtk_widget_queue_draw (widget);
     }
 
@@ -563,14 +565,9 @@ gtk_switch_paint_handle (GtkWidget    *widget,
                          cairo_t      *cr,
                          GdkRectangle *box)
 {
-  GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
   GtkStyleContext *context = gtk_widget_get_style_context (widget);
-  GtkStateFlags state = gtk_widget_get_state_flags (widget);
 
   gtk_style_context_save (context);
-  if (priv->in_switch)
-    state |= GTK_STATE_FLAG_PRELIGHT;
-  gtk_style_context_set_state (context, state);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER);
 
   gtk_render_slider (context, cr,